<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Player {
	/*
	* Criar Jogador do jogo de futebol 
	* @author Michael Frandin da Silva - michaelfrandin@live.com
	* @copyright GPL
	* @version 2.0 (16/01/2014)
	* */
	
	/**
	 * Criação do jogador
	 * @param $name Nome do usuário
	 * @param $country Id do pais jogador
	 * @param $key Indice do jogador.
	 * @param $tipoFormacao Tipo da formação (1, 2, 3, 4)
	 * @param $position_arr Array com as posições do jogo
	 * @return Array
	 * */
	public function createPlayer($name, $country, $key, $tipoFormacao, Array $position_arr){
		$retorno = array();	
		/**
		 * Tipo da formação do $tipoFormacao define quais tipos de jogares será criados e e pra qual formação.
		 * 1 - 3-3-4 (2 zagueiros, 1 Lateral, - 2 meio-campo, 1 alas, - 1 ponta, 3 atacantes)
		 * 2 - 3-5-2 (1 Meio-campo, 2 volantes, 2 laterais, 2 centroavantes, 3 Alas)
		 * 3 - 4-3-3 (2 zagueiros, 2 Lateral, 1 volante, - 3 meio campo, - 1 ponta, 1 atacante, 1 centro avante)
		 * 4 - 4-4-2 (2 zagueiros, 2 Lateral, 1 volante, - 2 meio camp, 2 volante, - 1 atacante, 1 centro avante)
		 * */
		//Altura
		$height1 = 1;
		$height2 = rand(60,99);
		$height = $height1.".".$height2;
		//Peso
		$weight1 = rand(50,99);
		$weight2 = rand(0,99);
		$weight2 = ($weight2 < 10)?"0".$weight2:$weight2;
		$weight = $weight1.".".$weight2;
		//Retorna a posição do jogador
		$position = $this->_type_position($key, $tipoFormacao);
		$position_name = $position_arr[$position];
		
		$age_player = $this->_get_birthday(rand(16, 23));
		$retorno['player_name'] = $name;
		$retorno['player_birthday'] = $age_player;
		$retorno['player_age'] = $this->_get_age(mysql_to_br($age_player));
		$retorno['player_weight'] = $weight;
		$retorno['player_height'] = $height;
		$retorno['country_id'] = $country;
		$retorno['player_position_id'] = $position;
		$retorno['position_name'] = $position_name;
		$retorno['player_deft'] = (rand(1, 100) > 85)?"0":"1";
		
		return	$retorno;
	}
	
	/**
	 * Criação dos status do jogador
	 * @param $position ID da posição do jogador.
	 * @return array de atributos.
	 * */
	public function cratePlayerStatus($age){
		$retorno = array();
		
		$add_atrr = ($age - 16 < 0)?0:$age - 16;
		
		$men_posicionamento = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$men_agressao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$men_antecipacao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$men_concentracao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$men_criatividade = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$men_influencia = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$men_decisao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$men_determinacao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		
		$fis_forca = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$fis_aceleracao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$fis_agilidade = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$fis_equilibrio = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr; 
		$fis_impulsao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$fis_velocidade = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$fis_resistencia = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$fis_reflexo = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
			
		$tec_cruzamento = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$tec_drible = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$tec_cabeceamento = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$tec_marcacao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$tec_passe = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$tec_finalizacao = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$tec_penaltis = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		$tec_desarme = $this->_create_float(rand(1,3),rand(0,99)) + $add_atrr;
		
		
		$salary = $this->_get_salary($age);

		
		$retorno['player_salary'] = $salary;
		$retorno['player_pass'] = $salary * 10;

		$retorno['player_men_posicionamento'] = $men_posicionamento;
		$retorno['player_men_agressao'] = $men_agressao;
		$retorno['player_men_antecipacao'] = $men_antecipacao;
		$retorno['player_men_concentracao'] = $men_concentracao;
		$retorno['player_men_criatividade'] = $men_criatividade;
		$retorno['player_men_influencia'] = $men_influencia;
		$retorno['player_men_decisao'] = $men_decisao;
		$retorno['player_men_determinacao'] = $men_determinacao;
		
		$retorno['player_fis_forca'] = $fis_forca;
		$retorno['player_fis_aceleracao'] = $fis_aceleracao;
		$retorno['player_fis_agilidade'] = $fis_agilidade;
		$retorno['player_fis_equilibrio'] = $fis_equilibrio;
		$retorno['player_fis_impulsao'] = $fis_impulsao;
		$retorno['player_fis_velocidade'] = $fis_velocidade;
		$retorno['player_fis_resistencia'] = $fis_resistencia;
		$retorno['player_fis_reflexo'] = $fis_reflexo;
		
		$retorno['player_tec_cruzamento'] = $tec_cruzamento;
		$retorno['player_tec_drible'] = $tec_drible;
		$retorno['player_tec_cabeceamento'] = $tec_cabeceamento;
		$retorno['player_tec_marcacao'] = $tec_marcacao;
		$retorno['player_tec_passe'] = $tec_passe;
		$retorno['player_tec_finalizacao'] = $tec_finalizacao;
		$retorno['player_tec_penaltis'] = $tec_penaltis;
		$retorno['player_tec_desarme'] = $tec_desarme;
		
		return	$retorno;
	}
	
	
	//==Funções de apoio=====
	/**
	 * Retonar qual a posição do jogador que vai ser criado.
	 * @param $k indice do jogador.
	 * @param $type Indica o tipo da formção que foi sorteada
	 * @return Constante com Id da Posição
	 * */
	private function _type_position($k, $type) {
		$player_position = NULL;
		if($type == 1) {//1 - 3-3-4
			switch ($k) {
				case 0:
				case 1:
					$player_position = PO_GOLEIRO;
					break;
				case 2:
				case 3:
				case 4:
					$player_position = PO_ZAGUEIRO;
					break;
				case 5:
				case 6:
					$player_position = PO_LATERAL;
					break;
				case 7:
				case 8:
				case 9:
					$player_position = PO_MEIO_CAMPO;
					break;
				case 10:
				case 11:
					$player_position = PO_ALA;
					break;
				case 12:
				case 13:
					$player_position = PO_PONTA;
					break;
				case 14:
				case 15:
				case 16:
					$player_position = PO_ATACANTE;
					break;
			}
		}else if($type == 2){//2 - 3-5-2
			switch ($k) {
				case 0:
				case 1:
					$player_position = PO_GOLEIRO;
					break;
				case 2:
				case 3:
					$player_position = PO_ZAGUEIRO;
					break;
				case 4:
				case 5:
					$player_position = PO_LATERAL;
					break;
				case 6:
				case 7:
					$player_position = PO_VOLANTE;
					break;
				case 8:
				case 9:
				case 10:
					$player_position = PO_MEIO_CAMPO;
					break;
				case 11:
				case 12:
				case 13:
					$player_position = PO_ALA;
					break;
				case 14:
				case 15:
				case 16:
					$player_position = PO_CENTROAVANTE;
					break;
			}
		}else if($type == 3){//3 - 4-3-3
			switch ($k) {
				case 0:
				case 1:
					$player_position = PO_GOLEIRO;
					break;
				case 2:
				case 3:
				case 4:
					$player_position = PO_ZAGUEIRO;
					break;
				case 5:
				case 6:
					$player_position = PO_VOLANTE;
					break;
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
					$player_position = PO_MEIO_CAMPO;
					break;
				case 12:
					$player_position = PO_PONTA;
					break;
				case 13:
				case 14:
					$player_position = PO_ATACANTE;
				case 15:
				case 16:
					$player_position = PO_CENTROAVANTE;
					break;
			}			
		}else if($type == 4){//4 - 4-4-2
			switch ($k) {
				case 0:
				case 1:
					$player_position = PO_GOLEIRO;
					break;
				case 2:
				case 3:
				case 4:
					$player_position = PO_ZAGUEIRO;
					break;
				case 5:
				case 6:
				case 7:
					$player_position = PO_LATERAL;
					break;
				case 8:
				case 9:
					$player_position = PO_VOLANTE;
					break;
				case 10:
				case 11:
				case 12:
					$player_position = PO_MEIO_CAMPO;
					break;
				case 13:
				case 14:
					$player_position = PO_ALA;
				case 15:
					$player_position = PO_ATACANTE;
				case 16:
					$player_position = PO_CENTROAVANTE;
					break;
			}
		}

		return $player_position;
	}

	/**
	 * Função de gerar numeros randomicos
	 * @param $unidade
	 * @param $dezena
	 * @param $bonus é uma valor que pode ser atribuido como bonus
	 * @retuen float
	 * */
	private function _create_float($unidade, $dezena, $bonus = 0) {
		$unidade += $bonus;
		$unidade = ($unidade < 10)?'0'.$unidade:$unidade;
		$dezena = ($dezena < 10)?'0'.$dezena:$dezena;
		
		return $unidade.'.'.$dezena;
	}
	
	/**
	 * Retorna o salario do jogador levando em questão os atributos por posição
	 * @param Int $position Posição do jogador
	 * @param Array $atributes Atributos do usário.
	 * @return int Salario do jodador
	 * */
	private function _get_salary($age, $position = '', $atributes = ''){
		$salary = 0;
		switch ($age) {
			case 16;
					$salary = rand(1000,2000);
				break;
			case 17;
					$salary = rand(2000,3000);
				break;
			case 18;
					$salary = rand(3000,4000);
				break;
			case 19;
					$salary = rand(4000,5000);
				break;
			case 20;
					$salary = rand(5000,6000);
				break;
			case 21;
					$salary = rand(6000,7000);
				break;
			case 22;
					$salary = rand(7000,8000);
				break;
			default:
					$salary = rand(8000,9000);
				break;
		}
		
		return $salary;
	}
	
	/**
	 * Retorna a data do aniversario do jogador.
	 * @param Int $age idade
	 * @return int Salario do jodador
	 * */
	private function _get_birthday($age){
		$year = date("Y") - $age;
		$month = date("m");
		$day_max = cal_days_in_month(CAL_GREGORIAN, $month, $year);
		$day = rand(1,$day_max);
		$day = ($day < 10)?'0'.$day:$day;
		
		return $year.'-'.$month.'-'.$day;
	}
	
	private function _get_age($data_nasc) {

		$data_nasc = explode("/", $data_nasc);
		
		$data = date("d-m-Y");
		$data = explode("-", $data);
		$anos = $data[2] - $data_nasc[2];
		
		if ( $data_nasc[1] >= $data[1] ){
			
			if ( $data_nasc[0] <= $data[0] ){
				return $anos; break;
			}else{
				return $anos-1;
				break;
			} 
		}else{
			return $anos;
		} 
	}
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */